#pragma once

#include <services/provider.hpp>
#include <engine/engine.hpp>
#include <engine.ui/Widgets.hpp>
#include <WinUi/MainWindow.hpp>

#include "Game.hpp"




class MainWindow
	: public WinUi::MainWindow
{
public:

	MainWindow(services::provider::ptr provider);
	virtual ~MainWindow();

protected:

	void onIdle();

	LRESULT msgProc(UINT msg, WPARAM wParam, LPARAM lParam);

private:

	Engine::IEngine::ptr createEngine(services::provider::ptr provider);

private:

	Engine::IEngine::ptr      m_engine;
	Engine::Ui::System::ptr   m_uiSystem;
	Game::ptr                 m_game;
};
///////////////////////////////////////////////////////////////////////////////////////////////////
